<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once BASE_PATH.'application/controllers/base'.EXT;

class Tarjetas extends Base {

    public function __construct()
    {
         parent::__construct();
         $this->load->model("competidordao");
         $this->load->model("exceldao");
         $this->load->model("barcodedao");
    }

    public function data($data = array()){
        
        $path = BASE_PATH."media".DS."templates".DS.$data["template"].".xlsx";
        
        $excel = $this->exceldao->load(array("path" => $path));
        $sheet = $excel->getSheet();
        
        $competidores = $this->competidordao->query("
                                                    SELECT
                                                    c.competidor_k,
                                                    c.nombre,
                                                    c.rama,
                                                    c.edad,
                                                    c.orden,
                                                    CONCAT(cl.nombre,' ',e.prefijo) as equipo,
                                                    CONCAT(ca.inicio_edad,' - ',ca.fin_edad) as categoria,
                                                    cl.nombre as club,
                                                    CONCAT(ec.inicio_edad,' - ',ec.fin_edad) as relevo,
                                                    e.carril,
                                                    e.posicion
                                                    FROM
                                                    competidores c,
                                                    competidores_categorias ca,
                                                    equipos e,
                                                    equipos_categorias ec,
                                                    clubes cl
                                                    WHERE
                                                    c.competidor_categoria_k = ca.competidor_categoria_k
                                                    AND
                                                    c.equipo_k = e.equipo_k
                                                    AND
                                                    e.equipo_categoria_k = ec.equipo_categoria_k
                                                    AND
                                                    e.club_k = cl.club_k
                                                    ORDER BY
                                                    e.carril ASC,e.posicion DESC,cl.club_k asc, e.equipo_k desc, ec.equipo_categoria_k asc,c.orden asc
                                                    ");
        
        foreach($competidores as $competidor){
            
            $copy = $this->exceldao->copySheet(array(
                                            "sheet" => $sheet,
                                            "title" => $competidor->nombre,
                                            "excel" => $excel
                                            )
                                      );
            $excel->setActiveSheetIndexByName($competidor->nombre);
            
            $titulo     = $excel->getCellByValue('$titulo');
            $nombre     = $excel->getCellByValue('$nombre');
            $categoria  = $excel->getCellByValue('$categoria');
            $carril	= $excel->getCellByValue('$carril');
            $equipo     = $excel->getCellByValue('$equipo');
            $relevo	= $excel->getCellByValue('$relevo');
            $posicion	= $excel->getCellByValue('$posicion');
            $numero     = $excel->getCellByValue('$numero');
            $imagen     = $excel->getCellByValue('$imagen');
            
            
            $path = BASE_PATH."media".DS."barcode".DS.$competidor->competidor_k.".png";
            
            $this->barcodedao->generate(array(
                                              "text" => $competidor->competidor_k,
                                              "path" => $path
                                              )
                                        );
            
            $this->exceldao->insertImage(array(
                                    "sheet"        => $copy,
                                    "path"         => $path,
                                    "celd"         => $imagen
                                    )
                               );
           
            if(!empty($titulo))
            $excel->getActiveSheet()->setCellValue($titulo, TITLE);
            
            $excel->getActiveSheet()->setCellValue($nombre, $competidor->nombre);
            $excel->getActiveSheet()->setCellValue($categoria, $competidor->categoria);       
            $excel->getActiveSheet()->setCellValue($carril, $competidor->carril);
            $excel->getActiveSheet()->setCellValue($equipo, $competidor->equipo);
            
            if(!empty($relevo))
            $excel->getActiveSheet()->setCellValue($relevo, $competidor->relevo);
            $excel->getActiveSheet()->setCellValue($posicion, $competidor->posicion);
            $excel->getActiveSheet()->setCellValue($numero, $competidor->orden);
                                    
                                    
        }

        $excel->removeSheetByIndex(0);
        $save_path = BASE_PATH."media".DS."cache".DS.$data["save"].".xlsx";
        $this->exceldao->save(array(
                           "path" => $save_path,
                           "excel" => $excel
                           )
                     );
        
        $path_parts = pathinfo($save_path);
        $data = file_get_contents($save_path); // Read the file's contents

        force_download($path_parts['basename'], $data);
    }



    public function data_portada($data = array()){
        
        $path = BASE_PATH."media".DS."templates".DS.$data["template"].".xlsx";
        
        $excel = $this->exceldao->load(array("path" => $path));
        $sheet = $excel->getSheet();
        
        $equipos = $this->competidordao->query("
                                                    SELECT
                                                    CONCAT(cl.nombre,' ',e.prefijo) as equipo,
                                                    CONCAT(ec.inicio_edad,' - ',ec.fin_edad) as relevo,
                                                    e.carril,
                                                    e.posicion
                                                    FROM
                                                    equipos e,
                                                    equipos_categorias ec,
                                                    clubes cl
                                                    WHERE
                                                    e.equipo_categoria_k = ec.equipo_categoria_k
                                                    AND
                                                    e.club_k = cl.club_k
                                                    ORDER BY
                                                    e.carril ASC,e.posicion DESC,cl.club_k asc, e.equipo_k desc, ec.equipo_categoria_k asc
                                                    ");
        
        foreach($equipos as $record){
            
            $copy = $this->exceldao->copySheet(array(
                                            "sheet" => $sheet,
                                            "title" => $record->equipo." ".$record->relevo,
                                            "excel" => $excel
                                            )
                                      );
            $excel->setActiveSheetIndexByName($record->equipo." ".$record->relevo);
            
            $titulo     = $excel->getCellByValue('$titulo');
            $carril	= $excel->getCellByValue('$carril');
            $equipo     = $excel->getCellByValue('$equipo');
            $relevo	= $excel->getCellByValue('$relevo');
            $posicion	= $excel->getCellByValue('$posicion');

           
            $excel->getActiveSheet()->setCellValue($titulo, TITLE)
                                    ->setCellValue($carril, $record->carril)
                                    ->setCellValue($equipo, $record->equipo)
                                    ->setCellValue($relevo, $record->relevo)
                                    ->setCellValue($posicion, $record->posicion);
        }

        $excel->removeSheetByIndex(0);
        $save_path = BASE_PATH."media".DS."cache".DS.$data["save"].".xlsx";
        $this->exceldao->save(array(
                           "path" => $save_path,
                           "excel" => $excel
                           )
                     );
        
        $path_parts = pathinfo($save_path);
        $data = file_get_contents($save_path); // Read the file's contents

        force_download($path_parts['basename'], $data);
    }

    public function jueces($tipo =""){
        
        if(empty($tipo))
        {
            $this->data(array(
                              "template" => "jueces",
                              "save"     => "save-jueces"
                              )
                        );
        }else{
            $this->data_portada(array(
                              "template" => "jueces_caratula",
                              "save"     => "save-jueces-caratula"
                              )
                        );
        }

    }
    
    
    
    
    public function tarjetero($tipo=""){

        if(empty($tipo))
        {
            $this->data(array(
                              "template" => "tarjetero",
                              "save"     => "save-tarjetero"
                              )
                        );
        }else{
            $this->data_portada(array(
                              "template" => "tarjetero",
                              "save"     => "save-tarjetero-caratula"
                              )
                        );
        }
    }
    
}

?>